package com.jl15988.chainlog.manual;

/**
 * 监控会话接口
 *
 * @author Jalon
 * @since 2025/9/29 14:42
 **/
public interface ChainLogSession extends AutoCloseable {
    /**
     * 记录方法参数
     */
    ChainLogSession withParams(Object... params);

    /**
     * 结束监控（成功）
     */
    void endSuccess();

    /**
     * 结束监控（成功）并记录返回值
     */
    void endSuccess(Object result);

    /**
     * 结束监控（异常）
     */
    void endException(Throwable exception);

    /**
     * 结束监控（异常）并记录返回值
     */
    void endException(Throwable exception, Object result);

    /**
     * 自动关闭资源（try-with-resources支持）
     * 默认为成功结束
     */
    @Override
    default void close() {
        endSuccess();
    }
}
